import java.io.*;
import java.lang.reflect.Array;
import java.util.Arrays;

public class StringMethodDemo {
    public static void main(String[] args) {
        /**
         * 基本类型及对应包装类，本类型与其他基本类型之间转换
         */
        //定义包装类对象
        Integer integer = new Integer(10);//定义Integer包装类对象，值为10
        Integer integer1 = new Integer("10");//定义Integer包装类对象，值为10
        Float flo = new Float(10.1f);
        Float flo2 = new Float("10.1f");
        Double dou = new Double(11.16);
        Double dou2 = new Double("11.16");
        Character ch = new Character('c');

        //拆箱与装箱
        int demoInt = 10;
        Integer demoInteger = new Integer(demoInt);//手动装箱
        Integer demoInteger2 = demoInt;//自动装箱
        int chaiBox = demoInteger2.intValue();//手动拆箱为int类型
        int chaiBox2 = demoInteger2;//自动拆箱为int类型
        //float类型的拆箱与装箱
        float f1 = 10.30f;
        Float f1Box = new Float(f1);
        Float f2Box = f1;
        float f3 = f2Box.floatValue();
        float f4 = f2Box;
        //double类型装箱与拆箱
        double d1 = 11.16;
        Double d1Box = new Double(d1);
        Double d2Box = d1;
        double d3 = d1Box.doubleValue();
        double d4 = d1Box;

        /**
         * 字符与基本类型之间转换
         */

        //基本类型转字符串类型,三种办法
        int a = 10;
        String str1 = Integer.toString(a);
        String str2 = String.valueOf(a);
        String str3 = a + "";
        //字符串转基本类型,两种办法
        String str = "8";
        int b = Integer.parseInt(str);
        int c = Integer.valueOf(str);

        //实例：第一个结果是字符串拼接
        double d = 78.5;
        String str4 = String.valueOf(d);
        System.out.println("double转字符串与20求和结果：" + (str4 + 20));
        String str5 = "180.20";
        Double e = Double.parseDouble(str5);
        System.out.println("字符串转double类型与20求和结果：" + (e + 20));

        /**
         * 字符串相关方法
         */
        //定义字符串对象的方法
        String s1 = "demostr";
        String s2 = new String();
        String s3 = new String("demostr");
        //字符串对象创建后不可修改，修改只是创建了新的对象，所指向的内存空间不同
        String s4 = "demostr";
        String s5 = new String("demostr");
        System.out.println(s1 == s4);//返回true
        System.out.println(s1 == s3);//返回false
        System.out.println(s3 == s5);//返回false
        //字符串方法
        String strMath = "学习 JAVA 编程";
        System.out.println("字符串长度：" + strMath.length());
        char c1 = '程';
        System.out.println("字符‘程’的位置：" + strMath.indexOf(c1));
        System.out.println(strMath.length());
        System.out.println("字符串‘JAVA’的位置：" + strMath.indexOf("JAVA"));//查不到会返回-1
        System.out.println("字符串‘JAVA’的位置：" + strMath.indexOf("JAVA001"));//查不到会返回-1
        //拆分字符串
        String[] arry = strMath.split(" ");
        System.out.println("字符串拆分后：" + arry[0] + arry[1] + arry[2]);
        System.out.println("字符串拆分数组后转字符串输出：" + Arrays.toString(arry));
        System.out.println("字符串中位置【3,7】之间的子串：" + strMath.substring(3, 7));
        String strMath2 = " 学习JAVA 前后有空格 ！ ";
        System.out.println("字符串去除前后空格：" + strMath2.trim());
        System.out.println("字符串转为小写：" + strMath2.toLowerCase());
        System.out.println("字符串中指定位置5的字符：" + strMath.charAt(5));//获取指定位置的字符
        //字符串转换为数组
        byte[] bDemo=strMath.getBytes();
        System.out.println("转换后的字节数组：");
        for (int i=0;i<bDemo.length;i++){
            System.out.print(bDemo[i]);
        }
        System.out.println();
        /**
         * StringBuilder的相关方法
         */
        StringBuilder sb=new StringBuilder("hello");
        sb.append(" demo");
        sb.append(1026);
        System.out.println("追加后字符串："+sb);
        sb.insert(6,"first " );
        System.out.println("插入后字符串："+sb);
        sb.toString();
        System.out.println("转为字符串后："+sb);
        System.out.println("——————StringBuild实现字符串中，连续插入字符——————");
        StringBuilder sbDemo=new StringBuilder();
        sbDemo.append("asadaeae");
        for(int i=(sbDemo.length()-3);i>=1;){
            sbDemo.insert(i,',');
            i=i-3;
        }
        System.out.println("插入，后的字符串："+sbDemo);





        System.out.println("——————判断字符出现的次数——————");
        String timeStr="allkdgaweogimaomkgakld,fng a";
        int num=0;
        for (int i=0;i<timeStr.length();i++){
            if (timeStr.charAt(i)=='a'){
                num++;
            }else {
                continue;
            }
        }
        System.out.println("字符a出现的次数："+num);

        /**
         * 判断文件名和邮箱是否符合格式
         */
        System.out.println("——————判断文件名和邮箱是否符合格式——————");
        String fileJavaName = "JavaDeomo.java";
        String emailStr = "lingmail@demo.";
        int weizhi = fileJavaName.indexOf(".");
        String endStr = null;
        if (weizhi != -1 && weizhi != 0 && weizhi != fileJavaName.length()) {
            endStr = fileJavaName.substring((weizhi + 1), fileJavaName.length());
            if (endStr.equals("java")) {
                System.out.println("JAVA文件名正确!");
            } else {
                System.out.println("JAVA文件名不正确");
            }
        } else {
            System.out.println("JAVA文件名不正确");
        }
        int aiteIndex = emailStr.indexOf("@");
        int dotIndex = emailStr.indexOf(".");//位置指的是0开始
        System.out.println(dotIndex);
        System.out.println(emailStr.length() );
        if (aiteIndex != -1&& aiteIndex != 0 && aiteIndex < dotIndex && dotIndex!=emailStr.length()-1 ) {
            System.out.println("邮箱格式正确！");
        } else {
            System.out.println("邮箱不正确！");
        }


    }

    public void stringMethodDemo() {

    }

}
